package br.com.fogas.notafiscal.condicoes.zfd5;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import br.com.fogas.database.FogasDatabase;
import br.com.fogas.database.entidade.NotaFiscal;
import br.com.fogas.database.entidade.NotaItem;
import br.com.fogas.database.entidade.NotaItemCondicoes;
import br.com.fogas.database.exception.CondicoesPrecoException;
import br.com.fogas.notafiscal.enums.CondicoesEnum;
import br.com.fogas.notafiscal.enums.TipoDocEnum;
import br.com.fogas.notafiscal.modelo.NFItem;

public class CondicaoZFD5 {
	
	private FogasDatabase database;
	
	private String condicao, material, tpDocVendas;
	
	private NotaFiscal notaFiscal;
	
	private NotaItem notaItem;
	
	private boolean granel;
	
	public CondicaoZFD5(FogasDatabase database, NFItem item) {
		this.database = database;
		this.granel = item.isGranel();
		this.tpDocVendas = (item.isGranel() ? TipoDocEnum.ZGRA.getDescricao() : TipoDocEnum.ZORB.getDescricao());
		this.condicao = CondicoesEnum.ZFD5.getCodigo();
		this.material = item.getMaterial().getTx_cod_material();
		this.notaFiscal = item.getNotaItem().getTx_nota_fiscal();
		this.notaItem = item.getNotaItem();
	}
	
	public List<NotaItemCondicoes> getCondicoes() throws CondicoesPrecoException {
		String cliente = notaFiscal.getTx_cod_cliente().getTx_cod_cliente();
		String grpPreco = notaFiscal.getTx_cod_cliente().getTx_canal().getTx_grupo_preco();
		String codCidade = notaFiscal.getTx_cod_cliente().getTx_cod_cid();
		String canal = notaFiscal.getTx_canal().getTx_canal();
		String condPgto = notaFiscal.getTx_cond_pagto().getTx_cod();
		String setor = notaFiscal.getTx_canal().getTx_setor();
		Date dataPedido = notaFiscal.getDt_nota();
		
		if(granel) {
			A970_ZFD5 a970 = new A970_ZFD5(database, notaItem, condicao, dataPedido, cliente);
			A987_ZFD5 a987 = new A987_ZFD5(database, notaItem, condicao, dataPedido, canal, material);
			A976_ZFD5 a976 = new A976_ZFD5(database, notaItem, condicao, dataPedido, tpDocVendas, codCidade, material);
			A965_ZFD5 a965 = new A965_ZFD5(database, notaItem, condicao, dataPedido, material, cliente);
			A972_ZFD5 a972 = new A972_ZFD5(database, notaItem, condicao, dataPedido, canal, setor, tpDocVendas);
			A971_ZFD5 a971 = new A971_ZFD5(database, notaItem, condicao, dataPedido, setor, cliente);
			A977_ZFD5 a977 = new A977_ZFD5(database, notaItem, condicao, dataPedido, canal, condPgto, codCidade, material);
			A903_ZFD5 a903 = new A903_ZFD5(database, notaItem, condicao, dataPedido, setor);
			A942_ZFD5 a942 = new A942_ZFD5(database, notaItem, condicao, dataPedido, material, grpPreco);
			A975_ZFD5 a975 = new A975_ZFD5(database, notaItem, condicao, dataPedido, canal, tpDocVendas, condPgto, material, cliente);
			A963_ZFD5 a963 = new A963_ZFD5(database, notaItem, condicao, dataPedido, tpDocVendas, condPgto, material, cliente);
			
			a970.setProxima(a987);
			a987.setProxima(a976);
			a976.setProxima(a965);
			a965.setProxima(a972);
			a972.setProxima(a971);
			a971.setProxima(a977);
			a977.setProxima(a903);
			a903.setProxima(a942);
			a942.setProxima(a975);
			a975.setProxima(a963);
			
			return a970.atende(new ArrayList<NotaItemCondicoes>());
		} else {
			return new ArrayList<NotaItemCondicoes>();
		}
	}
}
